package com.project.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 项目变更列对象 biz_project_alteration
 *
 * @author ruoyi
 * @date 2025-02-19
 */

@Data
@ApiModel("项目变更主表信息")
public class BizProjectAlteration{

    private static final long serialVersionUID = 1L;

    /** id */
//    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String ID;

    /** 项目id */
    @ApiModelProperty("项目id")
    private String projectId;

    /** 项目名称 */
    @ApiModelProperty("项目名称")
    @Excel(name = "项目名称")
    private String projectName;

    /** 负责人姓名 */
    @ApiModelProperty("负责人名称")
    @Excel(name = "负责人名称")
    private String chargerName;

    /** 所属单位id */
    @ApiModelProperty("所属单位id")
    private String unitId;

    /** 项目类型：校级项目xJProject，纵向项目zXProject */
    @ApiModelProperty("项目类型: xJProject zXProject yfContract")
    private String classId;

    /** 变更属性 */
    @ApiModelProperty("变更属性：校级/纵向：只有延期变更传值planEndDate，横向：负责人传chargerCode@chargerName，" +
            "合同经费变更传feeAuthorize，延期变更传值planEndDate，多个值以@连接")
    private String alterAttribute;

    /** 旧属性值 */
    @ApiModelProperty("旧属性值：前端不传值")
    private String oldAttributeValue;

    /** 新属性值（延期变更时为延期结项时间） */
    @ApiModelProperty("新属性值,取各变更属性对应的值。以@连接")
    private String newAttributeValue;

    /** 变更时间 */
    @ApiModelProperty("变更时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "变更时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private String alterDate;

    /** 变更原因 */
    @ApiModelProperty("变更原因")
    @Excel(name = "变更原因")
    private String alterReason;

    /** 变更证明材料id */
    @ApiModelProperty("变更证明材料id")
    private String alterFileId;

    /** 审核状态 */
    @ApiModelProperty("审核状态")
    private String checkstatus;

    /** 审核时间（未审核时取变更时间） */
    @ApiModelProperty("审核时间")
    private String checkdate;

    /** 创建人id */
    @ApiModelProperty("创建人id")
    private String createuserid;

    /** 创建人姓名 */
    @ApiModelProperty("创建人姓名")
    private String createusername;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createdate;

    /** 最后编辑人id */
    @ApiModelProperty("最后编辑人id")
    private String lastedituserid;

    /** 最后编辑人姓名 */
    @ApiModelProperty("最后编辑人姓名")
    private String lasteditusername;

    /** 最后编辑时间 */
    @ApiModelProperty("最后编辑时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date lasteditdate;

    /** 审核人姓名 */
    @ApiModelProperty("审核人姓名")
    private String checker;

    /** 负责人id */
    @ApiModelProperty("负责人id")
    private String chargerCode;

    /** 被委托人id */
    @ApiModelProperty("被委托人id")
    private String mandatarycode;

    /** 被委托人姓名 */
    @ApiModelProperty("被委托人姓名")
    @Excel(name = "被委托人姓名")
    private String mandataryname;

    /** 委托开始日期 */
    @ApiModelProperty("委托开始日期")
    @Excel(name = "委托开始日期")
    private String mandatarybegindate;

    /** 委托结束时间 */
    @ApiModelProperty("委托结束时间")
    @Excel(name = "委托结束时间")
    private String mandataryenddate;

    /** 变更类型 */
    @ApiModelProperty("变更类型")
    private String alterType;

//    @TableField(exist = false)
    @ApiModelProperty("变更类型名称")
    @Excel(name = "变更类型")
    private String alterTypeName;

    /** 延期变更属性值 */
    @ApiModelProperty("延期变更属性值")
    private String changePlanEndDate;

    /** 负责人变更属性值-负责人id */
    @ApiModelProperty("负责人变更属性值-负责人id")
    private String changeChargerCode;

    /** 负责人变更属性值-负责人姓名 */
    @ApiModelProperty("负责人变更属性值-负责人姓名")
    private String changeChargerName;

    /** 合同经费变更属性值 */
    @ApiModelProperty("合同经费变更属性值")
    private String changeFeeAuthorize;

    /** 导出需要的字段 **/
    /** 所属单位id */
    @TableField(exist = false)
    @ApiModelProperty("所属单位名称")
    @Excel(name = "所属单位")
    private String unitName;

    @TableField(exist = false)
    @ApiModelProperty("项目分类名称")
    @Excel(name = "项目分类")
    private String proTypeName;

    @TableField(exist = false)
    @ApiModelProperty("审核状态名称")
    @Excel(name = "审核状态")
    private String checkstatusName;

    /** 文件名称 */
    @ApiModelProperty("文件名称")
    @TableField(exist = false)
    private String fileName;

    /** 流程id */
    @ApiModelProperty("流程id")
    private String processInstanceId;

    /** 提交类型 */
    @ApiModelProperty("提交类型 -> -1:暂存,1:提交,2:保存并通过")
    @TableField(exist = false)
    private Integer submitType;

    /** 流程节点id */
    @ApiModelProperty("流程节点id")
    @TableField(exist = false)
    private String taskId;

    /** 是否当前审批人 */
    @TableField(exist = false)
    private Boolean isAuditor;
}
